package com.alan.shiro.api.token.manager;

import com.alan.shiro.api.token.StatelessToken;
import com.nimbusds.jose.JOSEException;

/**
 * @Auther: Alan liu
 * @Date: 2018/12/13 10:06
 * @Description: 对token进行操作的接口
 */
public interface TokenManager {
    /**
     * 创建一个token关联上指定用户
     * @param userCode 指定用户的id
     * @return 生成的token
     */
    public StatelessToken createToken(String userCode) throws JOSEException, Exception;

    /**
     * 检查token是否有效
     * @param statelessToken
     * @return 是否有效
     */
    public boolean checkToken(StatelessToken statelessToken);


    /**
     * 检查身份是否有效
     * @param authentication
     * @return 是否有效
     */
    public boolean check(String authentication);

    /**
     * 从字符串中解析token
     * @param authentication 加密后的字符串
     * @return
     */
    public StatelessToken getToken(String authentication);

    /**
     * 清除token
     * @param userCode 登录用户的id
     */
    public void deleteToken(String userCode);

}
